#include <iostream>
#include <string>
#include <optional>
#include <ctime>

#pragma once

struct DicomArchive {
    int id;
    std::string request_id;
    std::string hosp_code;
    std::string study_instance_uid;
    std::string files;
    int task_status{};
    int is_notified;
    std::string remark;
    std::string created_time;    // Use std::time_t for consistency
    std::string modified_time;   // Use std::time_t for consistency
    std::string deleted_time;    // Use std::time_t for consistency
    int is_delete;
};

struct FileInstance {
    int id;
    std::string hosp_code;
    std::string install_code;
    std::string study_instance_uid;
    std::optional<std::string> study_id;
    std::optional<std::string> study_date;
    std::optional<std::string> study_time;
    std::optional<std::string> study_description;
    std::optional<std::string> exam_ref_id;
    std::optional<std::string> body_part;
    std::optional<std::string> clinical_impression;
    std::optional<std::string> station_name;
    std::optional<std::string> manufacturer_model_name;
    std::optional<std::string> src_aet;
    std::string transfer_syntax_uid;
    std::optional<std::string> modality;
    std::optional<int> storage_size;
    std::optional<std::string> accession_number;
    std::optional<std::string> patient_id;
    std::optional<std::string> patient_age;
    std::optional<std::string> patient_dob;
    std::optional<std::string> patient_gender;
    std::optional<std::string> patient_name;
    std::optional<int> series_count;
    std::optional<int> count_instances;
    std::optional<std::string> storage_path_prefix;
    std::optional<int> file_system_id;
    std::optional<std::string> search_id;
    std::string created_time;
    std::string modified_time;
    std::string deleted_time;
    int status;
};

